# ResolvedManyToOneRelation.java

    package org.codefilarete.stalactite.engine.configurer.model;

    import org.codefilarete.reflection.ReadWritePropertyAccessPoint;
    import org.codefilarete.stalactite.dsl.property.CascadeOptions.RelationMode;
    import org.codefilarete.stalactite.sql.ddl.structure.Table;
    import org.codefilarete.stalactite.sql.result.BeanRelationFixer;

    /**
     * {@link ComponentRelation} dedicated to many-to-one.
     * Many-to-one relations are always represented with a foreign key on the right table.
     *
     * @param <SRC> the entity type owning the collection
     * @param <TRGT> the entity type stored in the collection
     * @param <TRGTID> the target entity identifier type
     * @param <LEFTTABLE> the source table type
     * @param <RIGHTTABLE> the target table type
     * @author Guillaume Mary
     */
    public class ResolvedManyToOneRelation<
    		SRC, TRGT,
    		TRGTID,
    		LEFTTABLE extends Table<LEFTTABLE>,
    		RIGHTTABLE extends Table<RIGHTTABLE>>
    		extends EntityRelation<SRC, TRGT, LEFTTABLE, RIGHTTABLE, TRGTID> {

    	private final boolean nullable;

    	public ResolvedManyToOneRelation(Entity<TRGT, TRGTID, RIGHTTABLE> targetEntity,
    	                                 ReadWritePropertyAccessPoint<SRC, TRGT> accessor,
    	                                 RelationMode relationMode,
    	                                 boolean fetchSeparately,
    	                                 DirectRelationJoin<LEFTTABLE, RIGHTTABLE, TRGTID> join,
    	                                 BeanRelationFixer<SRC, TRGT> beanRelationFixer, boolean nullable) {
    		super(targetEntity, accessor, relationMode, fetchSeparately, join, beanRelationFixer);
    		this.nullable = nullable;
    	}

    	public boolean isNullable() {
    		return nullable;
    	}
    }